package com.qiangesoft.wechat.core.interceptor;

import me.chanjar.weixin.common.api.WxConsts;
import me.chanjar.weixin.common.error.WxErrorException;
import me.chanjar.weixin.common.session.WxSessionManager;
import me.chanjar.weixin.mp.api.WxMpMessageInterceptor;
import me.chanjar.weixin.mp.api.WxMpService;
import me.chanjar.weixin.mp.bean.message.WxMpXmlMessage;
import org.springframework.stereotype.Component;

import java.util.Map;

/**
 * 对微信公众号消息进行预处理、过滤等操作，根据具体业务需求决定是否允许继续执行后面的路由处理方法
 * <p>
 * 1.如果要中止消息的继续处理，需要返回 false
 * 2.在执行完当前拦截器操作后，允许消息的继续处理，返回 true
 *
 * @author qiangesoft
 * @date 2023-09-07
 */
@Component
public class MessageInterceptor implements WxMpMessageInterceptor {

    @Override
    public boolean intercept(WxMpXmlMessage wxMessage, Map<String, Object> context, WxMpService wxMpService, WxSessionManager sessionManager) throws WxErrorException {
        String msgType = wxMessage.getMsgType();
        String content = wxMessage.getContent();
        // 文本处理
        if (msgType.equals(WxConsts.XmlMsgType.TEXT)) {
            if (content.contains("混蛋")) {
                String newContent = content.replace("混蛋", "***");
                wxMessage.setContent(newContent);
            }
            return true;
        }
        // todo 音频、视频处理
        return true;
    }
}
